.386P
Locals
jumps

include Keygen.inc

.Model Flat, StdCall

.Data
 
	warning  	db "Wpisz conajmniej 4 znaki",0 
	caption   	db "Informacje",0  ; pasek w Greetz
	greetz   	db 13,10,'Autor: Kwasek'
         		db 13,10,'26.04.2001',0
	klucz 		db 'SOFTWARE\Microsoft\Windows\CurrentVersion',0
	RegisteredOwner db 'RegisteredOwner',0
	msg     	MSGSTRUCT   <?> 
	wc      	WNDCLASS    <?> 
	hIce    	dd 0 ;uchwyt okna
	dword_4046A0 	dd 0
	dword_40429E 	dd 0
	keyHandle 	dd 0
	ciag		db 40h dup(?)     	
	my_name       	db 40h dup (?)       
	serial        	db 10 dup (0)        
	format        	db "%lu",0           
;=====================================================================================

.Code
 
Start:
    	jmp glowny  

getit:          
    	push    040              
    	push    offset my_name   
    	push    IDD_BOX1         
    	push    hwnd             
    	call    GetDlgItemTextA 
setit:
    	cmp     eax, 04        
    	jl      warning_box2     
    	call    call_00425FD8   
  
    

print_serial_into_box_2:  
  
    	push    eax
    	push    0
    	push    WM_SETTEXT       
    	push    IDD_BOX2        
    	push    hwnd             
    	call    SendDlgItemMessageA
    	mov     eax, 1
    	jmp     WMfinish      
    



call_00425FD8:
          push edi

@start:
    	xor ebx,	ebx
    	xor eax,	eax
	xor edx,	edx
    	mov eax,	offset my_name

LOC_0045CDB7:

	MOV                BL,BYTE PTR [EAX]
	ROr                EBX,008h
	ADD                EDX,EBX
	INC                EAX
	CMP                BYTE PTR [EAX],000h
	JNZ                LOC_0045CDB7
	
	mov [serial],dh
	sub dl,dh
	sub dl,1
	mov [serial+1],dl
	mov [serial+2],30h
	mov [serial+3],30h    
wroc:       
	mov eax,offset serial 
	pop edi
	ret

warning_box2:
    	push    offset warning   
    	push    0
    	push    WM_SETTEXT
    	push    IDD_BOX2
    	push    hwnd
    	call    SendDlgItemMessageA
    	mov     eax, 1
    	jmp     WMfinish

;=====================================================================================

glowny:             
    push    0
    call    GetModuleHandleA
    mov     [hIce], eax 

    ;wypelnienie pol struktury okna
    mov     [wc.clsStyle], CS_HREDRAW + CS_VREDRAW + CS_GLOBALCLASS
    mov     [wc.clsLpfnWndProc], offset WndProc
    mov     [wc.clsCbClsExtra], 0
    mov     [wc.clsCbWndExtra], 0
    mov     eax, [hIce]
    mov     [wc.clsHInstance], eax

    push    0              
    push    offset Main_DlgProc    
    push    0
    push    IDD_DLG
    push    [hIce]
    call    DialogBoxParamA
    jmp     finish

       
Main_DlgProc proc hwnd:DWORD, wmsg:DWORD, wparam:DWORD, lparam:DWORD

    push    ebx
    push    esi
    push    edi
    
    ;sprawdzenie jaka message i odpowiednia reakcja(skok)
    cmp     [wmsg], WM_COMMAND      
    jz      WMcommand
    cmp     [wmsg], WM_INITDIALOG   
    jz      WMinit
    cmp     [wmsg], WM_CLOSE        
    jz      WMdlgdestroy
    mov     eax, 0

WMfinish:
    pop     edi
    pop     esi
    pop     ebx
    ret


msg_loop:

    push    0
    push    0
    push    0
    push    offset msg
    call    GetMessageA

    cmp     eax, 0
    jz      end_loop

    push    offset msg
    call    TranslateMessage

    push    offset msg
    call    DispatchMessageA

    jmp     msg_loop

end_loop:
    push    [msg.msWPARAM]
    call    ExitProcess

Main_DlgProc    endp



WndProc proc hwnd:DWORD, wmsg:DWORD, wparam:DWORD, lparam:DWORD
    push    esi
    push    edi
    push    ebx

defwndproc:
    push    [lparam]
    push    [wparam]
    push    [wmsg]
    push    [hwnd]
    call    DefWindowProcA

finish:
    pop     ebx
    pop     edi
    pop     esi
    ret

WndProc          endp



WMgreetz:             
    push    0
    push    offset caption
    push    offset greetz
    push    0
    call    MessageBoxA
    mov     eax, 1
    jmp     WMfinish

    
WMinit: 
	push offset keyHandle
	push 1
	push 0
	push offset klucz
	push 80000002h
	call RegOpenKeyExA
	cmp eax, 00
	jnz getit

	
	mov     dword_4046A0, 1Eh
 	push    offset dword_4046A0
	push 	offset ciag
	push 	offset dword_40429E
	push 	0
	push    offset RegisteredOwner
	push    keyHandle
	call    RegQueryValueExA
	or      eax, eax
	jnz    	getit
        
    	push    offset ciag
    	push    0
    	push    WM_SETTEXT
    	push    IDD_BOX1
    	push    hwnd
    	call    SendDlgItemMessageA
	jmp     getit   


WMcommand:
    cmp     [wparam], IDD_GREETZ          
    jz      WMgreetz
    cmp     word ptr [wparam],IDD_BOX1   
    jz      getit
    cmp     [wparam], IDD_EXIT            
    jz      WMdlgdestroy

    mov     eax, 0
    jmp     WMfinish
    
WMdlgdestroy:
    call    ExitProcess

End Start